package com.toe.commodity.service;

import com.toe.common.restful.JsonPage;
import com.toe.pojo.entity.commodity.CommodityGoods;
import com.baomidou.mybatisplus.extension.service.IService;
import com.toe.pojo.vo.commodity.*;
import com.toe.pojo.vo.order.QueryGoodsAndSpecifications;
import com.toe.pojo.vo.recommend.RecommendCommodityVO;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 陶涛
 * @since 2022-07-19
 */
public interface CommodityGoodsService extends IService<CommodityGoods> {
    //商品的相关操作

    //添加新的在售商品
    void addNewCommodityGoods(AddNewGoods addNewGoods);

    //更新在售商品信息
    void updateCommodityGoods(CommodityGoods commodityGoods);

    //删除在售的商品
    void deletedCommodityGoods(Long id);

    //根据id查询商品信息--用户接口
    CommodityGoodsDetailsVO setHistoryGoodsById(Long id, Long userId);

    //根据id查询商品信息
    ProductDetails getGoodsById(Long id, Long specificationsId);

    //根据商品销量查询商品列表
    JsonPage<GoodsListDetailsVO> getCommodityGoodsBySales(Integer pageNum, Integer pageSize);

    JsonPage<RecommendRandomVO> getRecommendRandom(Integer pageNum, Integer pageSize);

    //根据id集合查询商品
    List<RecommendCommodityVO> getCommodityGoodsByIds(List<Long> id);

    CommodityOrderGoodsVO getOrderGoodsById(Long id, Long specificationId);

    List<CommodityOrderGoodsVO> listOrderGoodsByIds(List<QueryGoodsAndSpecifications> ids);

    //根据商品类型id查询对应的课程信息
    JsonPage<GoodsListDetailsVO> getCommodityGoodsByGoodsTypeId(Integer pageNum, Integer pageSize, Long id);

    //根据商家id查询对应的课程信息
    JsonPage<GoodsListDetailsVO> getCommodityGoodsByBusinessId(Integer pageNum, Integer pageSize, Long id);
}
